set-option -g assume-paste-time 1
set-option -g bell-action any
set-option -g bell-on-alert off
set-option -g default-command ""
set-option -g default-shell "/bin/bash"
set-option -g destroy-unattached off
set-option -g detach-on-destroy on
set-option -g display-panes-active-colour red
set-option -g display-panes-colour blue
set-option -g display-panes-time 1000
set-option -g display-time 750
set-option -g history-limit 2000
set-option -g key-table "root"
set-option -g lock-after-time 0
set-option -g lock-command "lock -np"
set-option -g message-command-style fg=yellow,bg=black
set-option -g message-style fg=black,bg=yellow
set-option -g mouse off
set-option -g prefix C-b
set-option -g prefix2 None
set-option -g renumber-windows on
set-option -g repeat-time 500
set-option -g set-titles off
set-option -g set-titles-string "#S:#I:#W - "#T" #{session_alerts}"
set-option -g status on
set-option -g status-interval 15
set-option -g status-justify left
set-option -g status-keys vi
set-option -g status-left "[#S] "
set-option -g status-left-length 10
set-option -g status-left-style default
set-option -g status-position bottom
set-option -g status-right " "#{=21:pane_title}" %H:%M %d-%b-%y"
set-option -g status-right-length 40
set-option -g status-right-style default
set-option -g status-style fg=black,bg=green
set-option -g update-environment "DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"
set-option -g visual-activity off
set-option -g visual-bell off
set-option -g visual-silence off
set-option -g word-separators " -_@"
set-option -g aggressive-resize on

######################
### DESIGN CHANGES ###
######################

# panes
set -g pane-border-fg black
set -g pane-active-border-fg brightred

## Status bar design
# status line
set -g status-justify left
set -g status-bg default
set -g status-fg colour12
set -g status-interval 2

# messaging
set -g message-fg black
set -g message-bg yellow
set -g message-command-fg blue
set -g message-command-bg black

#window mode
setw -g mode-bg colour6
setw -g mode-fg colour0

# window status
setw -g window-status-format " #F#I:#W#F "
setw -g window-status-current-format " #F#I:#W#F "
setw -g window-status-format "#[fg=magenta]#[bg=black] #I #[bg=cyan]#[fg=colour8] #W "
setw -g window-status-current-format "#[bg=brightmagenta]#[fg=colour8] #I #[fg=colour8]#[bg=colour14] #W "
setw -g window-status-current-bg colour0
setw -g window-status-current-fg colour11
setw -g window-status-current-attr dim
setw -g window-status-bg green
setw -g window-status-fg black
setw -g window-status-attr reverse

# Info on left (I don't have a session display for now)
set -g status-left ''

# loud or quiet?
set-option -g visual-activity off
set-option -g visual-bell off
set-option -g visual-silence off
set-window-option -g monitor-activity off
set-option -g bell-action none

set -g default-terminal "screen-256color"

# The modes {
setw -g clock-mode-colour colour135
setw -g mode-attr bold
setw -g mode-fg colour15
setw -g mode-bg colour238

# }
# The panes {

set -g pane-border-bg colour235
set -g pane-border-fg colour15
set -g pane-active-border-bg colour236
set -g pane-active-border-fg colour15

# }
# The statusbar {

set -g status-position bottom
set -g status-bg colour234
set -g status-fg colour15
set -g status-attr dim
set -g status-left ''
set -g status-right '#[fg=colour15,bg=colour241,bold] %d/%m #[fg=colour15,bg=colour245,bold] %H:%M:%S #[fg=colour15,bg=colour241,bold] #H '
set -g status-right-length 50
set -g status-left-length 20

setw -g window-status-current-fg colour15
setw -g window-status-current-bg colour238
setw -g window-status-current-attr bold
setw -g window-status-current-format ' #I#[fg=colour250]:#[fg=colour255]#W#[fg=colour50]#F '

setw -g window-status-fg colour15
setw -g window-status-bg colour235
setw -g window-status-attr none
setw -g window-status-format ' #I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F '

setw -g window-status-bell-attr bold
setw -g window-status-bell-fg colour255
setw -g window-status-bell-bg colour1

# }
# The messages {

set -g message-attr bold
set -g message-fg colour232
set -g message-bg colour166

# }

# set vim control
setw -g mode-keys vi
bind -n F2 copy-mode
bind-key -Tcopy-mode-vi 'v' send -X begin-selection
bind-key -Tcopy-mode-vi 'y' send -X copy-pipe-and-cancel "xclip -selection clipboard -i"
bind-key -Tcopy-mode-vi 'C-V' send -X rectangle-toggle
unbind p
bind p run-shell "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer"

# key bindings for moving over pannels
# binded to arrows for normal people
bind-key -n M-Left select-pane -L
bind-key -n M-Right select-pane -R
bind-key -n M-Up select-pane -U
bind-key -n M-Down select-pane -D
# binded to yuio for me
bind-key -n M-y select-pane -L
bind-key -n M-o select-pane -R
bind-key -n M-i select-pane -U
bind-key -n M-u select-pane -D

# colors
set-option -g default-terminal "screen-256color"

# tmux resurrect
run-shell $GIT_PATH/linux-setup/submodules/tmux-resurrect/resurrect.tmux
# restoring tmux contents
set -g @resurrect-capture-pane-contents 'on'

# remap kill button
bind-key k \
  split-window \; \
  setw synchronize-panes on \; \
  send-keys "sleep 1; tmux list-panes -s -F \"#{pane_pid} #{pane_current_command}\" | grep -v tmux | awk '{print $1}' | while read in; do killp \$in; done" C-m exit C-m

# create new split and window bindings (plus should stay on the current path)
bind -n C-s split-window -v -c "#{pane_current_path}"
bind -n C-d split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"

# remap Ctrl-b
set-option -g prefix C-a

# Smart pane switching with awareness of Vim splits.
# See: https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
    | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n C-h if-shell "$is_vim" "send-keys C-h"  "select-pane -L"
bind-key -n C-j if-shell "$is_vim" "send-keys C-j"  "select-pane -D"
bind-key -n C-k if-shell "$is_vim" "send-keys C-k"  "select-pane -U"
bind-key -n C-l if-shell "$is_vim" "send-keys C-l"  "select-pane -R"
bind-key -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"

# bind-key -n C-u if-shell 'test #{window_panes} -gt 1' 'last-pane' 'last-window'

bind -r C-h resize-pane -L 5
bind -r C-j resize-pane -D 5
bind -r C-k resize-pane -U 5
bind -r C-l resize-pane -R 5

bind -n C-t new-window -a -c "#{pane_current_path}"
bind -n M-u next
bind -n M-i prev
bind -n S-C-left  swap-window -t -1
bind -n S-C-right swap-window -t +1

# reload config file (change file location to your the tmux.conf you want to use)
bind r source-file ~/.tmux.conf

# make delay shorter
set -sg escape-time 0

# make window/pane index start with 1
#set -g base-index 1
#setw -g pane-base-index 1

# example of interactive tmux commands... maybe it could be used in some way..
bind C-e command-prompt -p "session?,message?" "run-shell \"tmux list-windows -t %1 \| cut -d: -f1\|xargs -I\{\} tmux send-keys -t %1:\{\} %2\""

# load additional user's config file
if-shell "if [ -f ~/.my.tmux.conf ]; then true; else false; fi" "source-file ~/.my.tmux.conf"
